﻿
namespace SvGame.Cached;

public static partial class CacheGame
{
    // 房间

    // 出生
    public static Room BornRoom = null;
    // 死亡
    public static Room DeathRoom = null;
    // 复活
    public static Room ReviveRoom = null;

    public static Dictionary<long, Room> DictRoom = new Dictionary<long, Room>();
    public static bool GetRoom(long uid, out Room obj) 
        => DictRoom.TryGetValue(uid, out obj);

    public static void LoadRooms()
    {
        foreach (var conf in ConfRoomExt.Values)
        {
            if (NewRoom(conf, out var obj))
            {
                DictRoom[obj.Uid] = obj;
                loger.Debug($"room: {obj.Uid} 出口:{obj.DictExit.Count}");
            }
        }
        var 玩家默认出生地 = EGlobalId.玩家默认出生地.ValueLong();
        if (!DictRoom.TryGetValue(玩家默认出生地, out BornRoom))
        {
            loger.Error($"全局 玩家默认出生地 配置错误 {玩家默认出生地}");
        }
        var 玩家死亡地点 = EGlobalId.玩家死亡地点.ValueLong();
        if (!DictRoom.TryGetValue(玩家死亡地点, out DeathRoom))
        {
            loger.Error($"全局 玩家死亡地点 配置错误 {玩家死亡地点}");
        }
        var 玩家复活地点 = EGlobalId.玩家复活地点.ValueLong();
        if (!DictRoom.TryGetValue(玩家复活地点, out ReviveRoom))
        {
            loger.Error($"全局 玩家复活地点 配置错误 {玩家复活地点}");
        }

        loger.Debug($"DictRoom:{DictRoom.Count} BornRoom:{BornRoom.Uid} DeathRoom:{DeathRoom.Uid} ReviveRoom:{ReviveRoom.Uid}");
    }
}
